{
  "nbformat": 4,
  "nbformat_minor": 0,
  "metadata": {
    "colab": {
      "name": "S+P Week 3 Lesson 4 - LSTM.ipynb",
      "provenance": [],
      "collapsed_sections": []
    },
    "kernelspec": {
      "name": "python3",
      "display_name": "Python 3"
    }
  },
  "cells": [
    {
      "cell_type": "code",
      "metadata": {
        "id": "D1J15Vh_1Jih",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "!pip install tf-nightly-2.0-preview\n"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "BOjujz601HcS",
        "colab_type": "code",
        "outputId": "aa0651c4-b24e-4e1e-936c-e31004fa751b",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 35
        }
      },
      "source": [
        "import tensorflow as tf\n",
        "import numpy as np\n",
        "import matplotlib.pyplot as plt\n",
        "print(tf.__version__)"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "2.0.0-dev20190628\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab_type": "code",
        "id": "Zswl7jRtGzkk",
        "colab": {}
      },
      "source": [
        "def plot_series(time, series, format=\"-\", start=0, end=None):\n",
        "    plt.plot(time[start:end], series[start:end], format)\n",
        "    plt.xlabel(\"Time\")\n",
        "    plt.ylabel(\"Value\")\n",
        "    plt.grid(True)\n",
        "\n",
        "def trend(time, slope=0):\n",
        "    return slope * time\n",
        "\n",
        "def seasonal_pattern(season_time):\n",
        "    \"\"\"Just an arbitrary pattern, you can change it if you wish\"\"\"\n",
        "    return np.where(season_time < 0.4,\n",
        "                    np.cos(season_time * 2 * np.pi),\n",
        "                    1 / np.exp(3 * season_time))\n",
        "\n",
        "def seasonality(time, period, amplitude=1, phase=0):\n",
        "    \"\"\"Repeats the same pattern at each period\"\"\"\n",
        "    season_time = ((time + phase) % period) / period\n",
        "    return amplitude * seasonal_pattern(season_time)\n",
        "\n",
        "def noise(time, noise_level=1, seed=None):\n",
        "    rnd = np.random.RandomState(seed)\n",
        "    return rnd.randn(len(time)) * noise_level\n",
        "\n",
        "time = np.arange(4 * 365 + 1, dtype=\"float32\")\n",
        "baseline = 10\n",
        "series = trend(time, 0.1)  \n",
        "baseline = 10\n",
        "amplitude = 40\n",
        "slope = 0.05\n",
        "noise_level = 5\n",
        "\n",
        "# Create the series\n",
        "series = baseline + trend(time, slope) + seasonality(time, period=365, amplitude=amplitude)\n",
        "# Update with noise\n",
        "series += noise(time, noise_level, seed=42)\n",
        "\n",
        "split_time = 1000\n",
        "time_train = time[:split_time]\n",
        "x_train = series[:split_time]\n",
        "time_valid = time[split_time:]\n",
        "x_valid = series[split_time:]\n",
        "\n",
        "window_size = 20\n",
        "batch_size = 32\n",
        "shuffle_buffer_size = 1000"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "4sTTIOCbyShY",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "def windowed_dataset(series, window_size, batch_size, shuffle_buffer):\n",
        "  dataset = tf.data.Dataset.from_tensor_slices(series)\n",
        "  dataset = dataset.window(window_size + 1, shift=1, drop_remainder=True)\n",
        "  dataset = dataset.flat_map(lambda window: window.batch(window_size + 1))\n",
        "  dataset = dataset.shuffle(shuffle_buffer).map(lambda window: (window[:-1], window[-1]))\n",
        "  dataset = dataset.batch(batch_size).prefetch(1)\n",
        "  return dataset"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "A1Hl39rklkLm",
        "colab_type": "code",
        "outputId": "75cbaf63-f635-4dd1-96fd-b4e1d6fd94bb",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 1000
        }
      },
      "source": [
        "tf.keras.backend.clear_session()\n",
        "tf.random.set_seed(51)\n",
        "np.random.seed(51)\n",
        "\n",
        "tf.keras.backend.clear_session()\n",
        "dataset = windowed_dataset(x_train, window_size, batch_size, shuffle_buffer_size)\n",
        "\n",
        "model = tf.keras.models.Sequential([\n",
        "  tf.keras.layers.Lambda(lambda x: tf.expand_dims(x, axis=-1),\n",
        "                      input_shape=[None]),\n",
        "    tf.keras.layers.Bidirectional(tf.keras.layers.LSTM(32, return_sequences=True)),\n",
        "  tf.keras.layers.Bidirectional(tf.keras.layers.LSTM(32)),\n",
        "  tf.keras.layers.Dense(1),\n",
        "  tf.keras.layers.Lambda(lambda x: x * 100.0)\n",
        "])\n",
        "\n",
        "lr_schedule = tf.keras.callbacks.LearningRateScheduler(\n",
        "    lambda epoch: 1e-8 * 10**(epoch / 20))\n",
        "optimizer = tf.keras.optimizers.SGD(lr=1e-8, momentum=0.9)\n",
        "model.compile(loss=tf.keras.losses.Huber(),\n",
        "              optimizer=optimizer,\n",
        "              metrics=[\"mae\"])\n",
        "history = model.fit(dataset, epochs=100, callbacks=[lr_schedule])"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "Epoch 1/100\n"
          ],
          "name": "stdout"
        },
        {
          "output_type": "stream",
          "text": [
            "W0701 23:09:28.075649 139706394146688 deprecation.py:323] From /usr/local/lib/python3.6/dist-packages/tensorflow_core/python/keras/optimizer_v2/optimizer_v2.py:460: BaseResourceVariable.constraint (from tensorflow.python.ops.resource_variable_ops) is deprecated and will be removed in a future version.\n",
            "Instructions for updating:\n",
            "Apply a constraint manually following the optimizer update step.\n"
          ],
          "name": "stderr"
        },
        {
          "output_type": "stream",
          "text": [
            "31/31 [==============================] - 6s 184ms/step - loss: 21.4949 - mae: 22.0115\n",
            "Epoch 2/100\n",
            "31/31 [==============================] - 1s 38ms/step - loss: 21.1328 - mae: 21.6472\n",
            "Epoch 3/100\n",
            "31/31 [==============================] - 1s 38ms/step - loss: 20.7158 - mae: 21.2292\n",
            "Epoch 4/100\n",
            "31/31 [==============================] - 1s 37ms/step - loss: 20.2701 - mae: 20.7798\n",
            "Epoch 5/100\n",
            "31/31 [==============================] - 1s 38ms/step - loss: 19.7780 - mae: 20.2896\n",
            "Epoch 6/100\n",
            "31/31 [==============================] - 1s 37ms/step - loss: 19.1758 - mae: 19.6838\n",
            "Epoch 7/100\n",
            "31/31 [==============================] - 1s 37ms/step - loss: 18.2329 - mae: 18.7455\n",
            "Epoch 8/100\n",
            "31/31 [==============================] - 1s 37ms/step - loss: 17.4745 - mae: 17.9816\n",
            "Epoch 9/100\n",
            "31/31 [==============================] - 1s 36ms/step - loss: 17.1541 - mae: 17.6597\n",
            "Epoch 10/100\n",
            "31/31 [==============================] - 1s 39ms/step - loss: 16.8486 - mae: 17.3525\n",
            "Epoch 11/100\n",
            "31/31 [==============================] - 1s 38ms/step - loss: 16.5485 - mae: 17.0524\n",
            "Epoch 12/100\n",
            "31/31 [==============================] - 1s 37ms/step - loss: 16.2530 - mae: 16.7591\n",
            "Epoch 13/100\n",
            "31/31 [==============================] - 1s 36ms/step - loss: 15.9575 - mae: 16.4636\n",
            "Epoch 14/100\n",
            "31/31 [==============================] - 1s 36ms/step - loss: 15.6584 - mae: 16.1633\n",
            "Epoch 15/100\n",
            "31/31 [==============================] - 1s 36ms/step - loss: 15.3578 - mae: 15.8621\n",
            "Epoch 16/100\n",
            "31/31 [==============================] - 1s 36ms/step - loss: 15.0649 - mae: 15.5677\n",
            "Epoch 17/100\n",
            "31/31 [==============================] - 1s 37ms/step - loss: 14.7838 - mae: 15.2885\n",
            "Epoch 18/100\n",
            "31/31 [==============================] - 1s 37ms/step - loss: 14.5124 - mae: 15.0166\n",
            "Epoch 19/100\n",
            "31/31 [==============================] - 1s 38ms/step - loss: 14.2572 - mae: 14.7570\n",
            "Epoch 20/100\n",
            "31/31 [==============================] - 1s 37ms/step - loss: 14.0244 - mae: 14.5246\n",
            "Epoch 21/100\n",
            "31/31 [==============================] - 1s 38ms/step - loss: 13.8093 - mae: 14.3102\n",
            "Epoch 22/100\n",
            "31/31 [==============================] - 1s 38ms/step - loss: 13.5990 - mae: 14.1009\n",
            "Epoch 23/100\n",
            "31/31 [==============================] - 1s 36ms/step - loss: 13.3874 - mae: 13.8871\n",
            "Epoch 24/100\n",
            "31/31 [==============================] - 1s 37ms/step - loss: 13.1721 - mae: 13.6703\n",
            "Epoch 25/100\n",
            "31/31 [==============================] - 1s 36ms/step - loss: 12.9491 - mae: 13.4467\n",
            "Epoch 26/100\n",
            "31/31 [==============================] - 1s 38ms/step - loss: 12.7177 - mae: 13.2158\n",
            "Epoch 27/100\n",
            "31/31 [==============================] - 1s 37ms/step - loss: 12.4759 - mae: 12.9747\n",
            "Epoch 28/100\n",
            "31/31 [==============================] - 1s 38ms/step - loss: 12.2282 - mae: 12.7263\n",
            "Epoch 29/100\n",
            "31/31 [==============================] - 1s 38ms/step - loss: 11.9710 - mae: 12.4713\n",
            "Epoch 30/100\n",
            "31/31 [==============================] - 1s 37ms/step - loss: 11.7008 - mae: 12.2018\n",
            "Epoch 31/100\n",
            "31/31 [==============================] - 1s 37ms/step - loss: 11.3790 - mae: 11.8717\n",
            "Epoch 32/100\n",
            "31/31 [==============================] - 1s 38ms/step - loss: 11.2770 - mae: 11.7775\n",
            "Epoch 33/100\n",
            "31/31 [==============================] - 1s 37ms/step - loss: 10.5393 - mae: 11.0358\n",
            "Epoch 34/100\n",
            "31/31 [==============================] - 1s 37ms/step - loss: 10.9169 - mae: 11.4071\n",
            "Epoch 35/100\n",
            "31/31 [==============================] - 1s 37ms/step - loss: 11.1307 - mae: 11.6302\n",
            "Epoch 36/100\n",
            "31/31 [==============================] - 1s 37ms/step - loss: 10.6052 - mae: 11.1067\n",
            "Epoch 37/100\n",
            "31/31 [==============================] - 1s 38ms/step - loss: 10.0656 - mae: 10.5667\n",
            "Epoch 38/100\n",
            "31/31 [==============================] - 1s 37ms/step - loss: 9.5500 - mae: 10.0461\n",
            "Epoch 39/100\n",
            "31/31 [==============================] - 1s 37ms/step - loss: 9.0605 - mae: 9.5571\n",
            "Epoch 40/100\n",
            "31/31 [==============================] - 1s 39ms/step - loss: 8.6169 - mae: 9.1088\n",
            "Epoch 41/100\n",
            "31/31 [==============================] - 1s 37ms/step - loss: 8.1961 - mae: 8.6896\n",
            "Epoch 42/100\n",
            "31/31 [==============================] - 1s 39ms/step - loss: 7.8300 - mae: 8.3230\n",
            "Epoch 43/100\n",
            "31/31 [==============================] - 1s 38ms/step - loss: 7.5609 - mae: 8.0550\n",
            "Epoch 44/100\n",
            "31/31 [==============================] - 1s 37ms/step - loss: 7.3059 - mae: 7.8007\n",
            "Epoch 45/100\n",
            "31/31 [==============================] - 1s 38ms/step - loss: 7.0696 - mae: 7.5605\n",
            "Epoch 46/100\n",
            "31/31 [==============================] - 1s 38ms/step - loss: 6.8414 - mae: 7.3303\n",
            "Epoch 47/100\n",
            "31/31 [==============================] - 1s 37ms/step - loss: 6.6322 - mae: 7.1208\n",
            "Epoch 48/100\n",
            "31/31 [==============================] - 1s 38ms/step - loss: 6.4345 - mae: 6.9241\n",
            "Epoch 49/100\n",
            "31/31 [==============================] - 1s 38ms/step - loss: 6.2254 - mae: 6.7161\n",
            "Epoch 50/100\n",
            "31/31 [==============================] - 1s 36ms/step - loss: 6.0527 - mae: 6.5433\n",
            "Epoch 51/100\n",
            "31/31 [==============================] - 1s 37ms/step - loss: 5.8990 - mae: 6.3832\n",
            "Epoch 52/100\n",
            "31/31 [==============================] - 1s 37ms/step - loss: 5.7542 - mae: 6.2375\n",
            "Epoch 53/100\n",
            "31/31 [==============================] - 1s 37ms/step - loss: 5.6079 - mae: 6.0902\n",
            "Epoch 54/100\n",
            "31/31 [==============================] - 1s 38ms/step - loss: 5.4807 - mae: 5.9581\n",
            "Epoch 55/100\n",
            "31/31 [==============================] - 1s 36ms/step - loss: 5.3883 - mae: 5.8649\n",
            "Epoch 56/100\n",
            "31/31 [==============================] - 1s 37ms/step - loss: 5.3283 - mae: 5.7960\n",
            "Epoch 57/100\n",
            "31/31 [==============================] - 1s 37ms/step - loss: 5.3062 - mae: 5.7761\n",
            "Epoch 58/100\n",
            "31/31 [==============================] - 1s 38ms/step - loss: 5.2953 - mae: 5.7588\n",
            "Epoch 59/100\n",
            "31/31 [==============================] - 1s 36ms/step - loss: 5.2223 - mae: 5.6861\n",
            "Epoch 60/100\n",
            "31/31 [==============================] - 1s 37ms/step - loss: 5.0937 - mae: 5.5644\n",
            "Epoch 61/100\n",
            "31/31 [==============================] - 1s 38ms/step - loss: 5.1471 - mae: 5.6095\n",
            "Epoch 62/100\n",
            "31/31 [==============================] - 1s 39ms/step - loss: 5.2782 - mae: 5.7408\n",
            "Epoch 63/100\n",
            "31/31 [==============================] - 1s 38ms/step - loss: 5.3021 - mae: 5.7684\n",
            "Epoch 64/100\n",
            "31/31 [==============================] - 1s 37ms/step - loss: 4.9985 - mae: 5.4791\n",
            "Epoch 65/100\n",
            "31/31 [==============================] - 1s 37ms/step - loss: 5.2652 - mae: 5.7438\n",
            "Epoch 66/100\n",
            "31/31 [==============================] - 1s 37ms/step - loss: 5.0887 - mae: 5.5727\n",
            "Epoch 67/100\n",
            "31/31 [==============================] - 1s 36ms/step - loss: 5.0244 - mae: 5.5037\n",
            "Epoch 68/100\n",
            "31/31 [==============================] - 1s 37ms/step - loss: 4.9528 - mae: 5.4332\n",
            "Epoch 69/100\n",
            "31/31 [==============================] - 1s 39ms/step - loss: 5.2934 - mae: 5.7748\n",
            "Epoch 70/100\n",
            "31/31 [==============================] - 1s 38ms/step - loss: 5.0257 - mae: 5.5061\n",
            "Epoch 71/100\n",
            "31/31 [==============================] - 1s 38ms/step - loss: 5.8698 - mae: 6.3689\n",
            "Epoch 72/100\n",
            "31/31 [==============================] - 1s 38ms/step - loss: 5.3336 - mae: 5.8189\n",
            "Epoch 73/100\n",
            "31/31 [==============================] - 1s 36ms/step - loss: 6.3428 - mae: 6.8376\n",
            "Epoch 74/100\n",
            "31/31 [==============================] - 1s 36ms/step - loss: 5.6116 - mae: 6.1061\n",
            "Epoch 75/100\n",
            "31/31 [==============================] - 1s 38ms/step - loss: 6.1446 - mae: 6.6292\n",
            "Epoch 76/100\n",
            "31/31 [==============================] - 1s 36ms/step - loss: 6.2236 - mae: 6.7193\n",
            "Epoch 77/100\n",
            "31/31 [==============================] - 1s 37ms/step - loss: 6.4386 - mae: 6.9178\n",
            "Epoch 78/100\n",
            "31/31 [==============================] - 1s 36ms/step - loss: 6.5088 - mae: 7.0080\n",
            "Epoch 79/100\n",
            "31/31 [==============================] - 1s 36ms/step - loss: 6.5152 - mae: 7.0168\n",
            "Epoch 80/100\n",
            "31/31 [==============================] - 1s 41ms/step - loss: 7.5090 - mae: 8.0238\n",
            "Epoch 81/100\n",
            "31/31 [==============================] - 1s 38ms/step - loss: 7.2540 - mae: 7.7349\n",
            "Epoch 82/100\n",
            "31/31 [==============================] - 1s 38ms/step - loss: 6.3301 - mae: 6.8037\n",
            "Epoch 83/100\n",
            "31/31 [==============================] - 1s 37ms/step - loss: 5.4483 - mae: 5.8989\n",
            "Epoch 84/100\n",
            "31/31 [==============================] - 1s 37ms/step - loss: 6.1204 - mae: 6.6115\n",
            "Epoch 85/100\n",
            "31/31 [==============================] - 1s 37ms/step - loss: 6.6871 - mae: 7.1887\n",
            "Epoch 86/100\n",
            "31/31 [==============================] - 1s 38ms/step - loss: 6.4184 - mae: 6.8992\n",
            "Epoch 87/100\n",
            "31/31 [==============================] - 1s 37ms/step - loss: 6.6237 - mae: 7.1150\n",
            "Epoch 88/100\n",
            "31/31 [==============================] - 1s 38ms/step - loss: 7.3721 - mae: 7.8736\n",
            "Epoch 89/100\n",
            "31/31 [==============================] - 1s 36ms/step - loss: 8.0184 - mae: 8.4836\n",
            "Epoch 90/100\n",
            "31/31 [==============================] - 1s 36ms/step - loss: 9.6776 - mae: 10.2216\n",
            "Epoch 91/100\n",
            "31/31 [==============================] - 1s 37ms/step - loss: 8.6603 - mae: 9.1908\n",
            "Epoch 92/100\n",
            "31/31 [==============================] - 1s 36ms/step - loss: 9.1711 - mae: 9.6962\n",
            "Epoch 93/100\n",
            "31/31 [==============================] - 1s 36ms/step - loss: 7.4648 - mae: 7.9644\n",
            "Epoch 94/100\n",
            "31/31 [==============================] - 1s 37ms/step - loss: 9.8468 - mae: 10.3532\n",
            "Epoch 95/100\n",
            "31/31 [==============================] - 1s 37ms/step - loss: 9.1915 - mae: 9.6303\n",
            "Epoch 96/100\n",
            "31/31 [==============================] - 1s 37ms/step - loss: 10.5476 - mae: 11.0897\n",
            "Epoch 97/100\n",
            "31/31 [==============================] - 1s 37ms/step - loss: 11.4537 - mae: 11.9054\n",
            "Epoch 98/100\n",
            "31/31 [==============================] - 1s 36ms/step - loss: 12.7645 - mae: 13.3121\n",
            "Epoch 99/100\n",
            "31/31 [==============================] - 1s 37ms/step - loss: 11.1958 - mae: 11.7019\n",
            "Epoch 100/100\n",
            "31/31 [==============================] - 1s 37ms/step - loss: 12.7021 - mae: 13.2224\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "AkBsrsXMzoWR",
        "colab_type": "code",
        "outputId": "99a3f57b-9145-4802-8256-401a54b238e7",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 291
        }
      },
      "source": [
        "plt.semilogx(history.history[\"lr\"], history.history[\"loss\"])\n",
        "plt.axis([1e-8, 1e-4, 0, 30])"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "[1e-08, 0.0001, 0, 30]"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 9
        },
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "tags": []
          }
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "4uh-97bpLZCA",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "tf.keras.backend.clear_session()\n",
        "tf.random.set_seed(51)\n",
        "np.random.seed(51)\n",
        "\n",
        "tf.keras.backend.clear_session()\n",
        "dataset = windowed_dataset(x_train, window_size, batch_size, shuffle_buffer_size)\n",
        "\n",
        "model = tf.keras.models.Sequential([\n",
        "  tf.keras.layers.Lambda(lambda x: tf.expand_dims(x, axis=-1),\n",
        "                      input_shape=[None]),\n",
        "   tf.keras.layers.Bidirectional(tf.keras.layers.LSTM(32, return_sequences=True)),\n",
        "  tf.keras.layers.Bidirectional(tf.keras.layers.LSTM(32)),\n",
        "  tf.keras.layers.Dense(1),\n",
        "  tf.keras.layers.Lambda(lambda x: x * 100.0)\n",
        "])\n",
        "\n",
        "\n",
        "model.compile(loss=\"mse\", optimizer=tf.keras.optimizers.SGD(lr=1e-5, momentum=0.9),metrics=[\"mae\"])\n",
        "history = model.fit(dataset,epochs=500,verbose=0)"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "icGDaND7z0ne",
        "colab_type": "code",
        "outputId": "58b69d1a-82d2-457b-9342-42ceb24b35da",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 393
        }
      },
      "source": [
        "forecast = []\n",
        "results = []\n",
        "for time in range(len(series) - window_size):\n",
        "  forecast.append(model.predict(series[time:time + window_size][np.newaxis]))\n",
        "\n",
        "forecast = forecast[split_time-window_size:]\n",
        "results = np.array(forecast)[:, 0, 0]\n",
        "\n",
        "\n",
        "plt.figure(figsize=(10, 6))\n",
        "\n",
        "plot_series(time_valid, x_valid)\n",
        "plot_series(time_valid, results)"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 720x432 with 1 Axes>"
            ]
          },
          "metadata": {
            "tags": []
          }
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "KfPeqI7rz4LD",
        "colab_type": "code",
        "outputId": "816335be-fd2a-428f-98d6-05983b84d9b5",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 35
        }
      },
      "source": [
        "tf.keras.metrics.mean_absolute_error(x_valid, results).numpy()"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "8.514286"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 12
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "JUsdZB_tzDLe",
        "colab_type": "code",
        "outputId": "964c47d9-7eec-42cd-905f-c45c2fd31d9e",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 235
        }
      },
      "source": [
        "import matplotlib.image  as mpimg\n",
        "import matplotlib.pyplot as plt\n",
        "\n",
        "#-----------------------------------------------------------\n",
        "# Retrieve a list of list results on training and test data\n",
        "# sets for each training epoch\n",
        "#-----------------------------------------------------------\n",
        "mae=history.history['mae']\n",
        "loss=history.history['loss']\n",
        "\n",
        "epochs=range(len(loss)) # Get number of epochs\n",
        "\n",
        "#------------------------------------------------\n",
        "# Plot MAE and Loss\n",
        "#------------------------------------------------\n",
        "plt.plot(epochs, mae, 'r')\n",
        "plt.plot(epochs, loss, 'b')\n",
        "plt.title('MAE and Loss')\n",
        "plt.xlabel(\"Epochs\")\n",
        "plt.ylabel(\"Accuracy\")\n",
        "plt.legend([\"MAE\", \"Loss\"])\n",
        "\n",
        "plt.figure()\n",
        "\n",
        "epochs_zoom = epochs[200:]\n",
        "mae_zoom = mae[200:]\n",
        "loss_zoom = loss[200:]\n",
        "\n",
        "#------------------------------------------------\n",
        "# Plot Zoomed MAE and Loss\n",
        "#------------------------------------------------\n",
        "plt.plot(epochs_zoom, mae_zoom, 'r')\n",
        "plt.plot(epochs_zoom, loss_zoom, 'b')\n",
        "plt.title('MAE and Loss')\n",
        "plt.xlabel(\"Epochs\")\n",
        "plt.ylabel(\"Accuracy\")\n",
        "plt.legend([\"MAE\", \"Loss\"])\n",
        "\n",
        "plt.figure()"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "error",
          "ename": "KeyError",
          "evalue": "ignored",
          "traceback": [
            "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
            "\u001b[0;31mKeyError\u001b[0m                                  Traceback (most recent call last)",
            "\u001b[0;32m<ipython-input-13-0d8269471fd6>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[1;32m      6\u001b[0m \u001b[0;31m# sets for each training epoch\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      7\u001b[0m \u001b[0;31m#-----------------------------------------------------------\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 8\u001b[0;31m \u001b[0mmae\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mhistory\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mhistory\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'mae'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m      9\u001b[0m \u001b[0mloss\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mhistory\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mhistory\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'loss'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     10\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
            "\u001b[0;31mKeyError\u001b[0m: 'mae'"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "3CGaYFxXNEAK",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "tf.keras.backend.clear_session()\n",
        "dataset = windowed_dataset(x_train, window_size, batch_size, shuffle_buffer_size)\n",
        "\n",
        "model = tf.keras.models.Sequential([\n",
        "  tf.keras.layers.Lambda(lambda x: tf.expand_dims(x, axis=-1),\n",
        "                      input_shape=[None]),\n",
        "  tf.keras.layers.Bidirectional(tf.keras.layers.LSTM(32, return_sequences=True)),\n",
        "  tf.keras.layers.Bidirectional(tf.keras.layers.LSTM(32)),\n",
        "  tf.keras.layers.Dense(1),\n",
        "  tf.keras.layers.Lambda(lambda x: x * 100.0)\n",
        "])\n",
        "\n",
        "\n",
        "model.compile(loss=\"mse\", optimizer=tf.keras.optimizers.SGD(lr=1e-6, momentum=0.9))\n",
        "model.fit(dataset,epochs=100, verbose=0)"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "FJ3R8ysauz9e",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "tf.keras.backend.clear_session()\n",
        "dataset = windowed_dataset(x_train, window_size, batch_size, shuffle_buffer_size)\n",
        "\n",
        "model = tf.keras.models.Sequential([\n",
        "  tf.keras.layers.Lambda(lambda x: tf.expand_dims(x, axis=-1),\n",
        "                      input_shape=[None]),\n",
        "  tf.keras.layers.Bidirectional(tf.keras.layers.LSTM(32, return_sequences=True)),\n",
        "  tf.keras.layers.Bidirectional(tf.keras.layers.LSTM(32, return_sequences=True)),\n",
        "  tf.keras.layers.Bidirectional(tf.keras.layers.LSTM(32)),\n",
        "  tf.keras.layers.Dense(1),\n",
        "  tf.keras.layers.Lambda(lambda x: x * 100.0)\n",
        "])\n",
        "\n",
        "\n",
        "model.compile(loss=\"mse\", optimizer=tf.keras.optimizers.SGD(lr=1e-6, momentum=0.9))\n",
        "model.fit(dataset,epochs=100)"
      ],
      "execution_count": 0,
      "outputs": []
    }
  ]
}